import CacheUtil from "@/main/common/CacheUtil.js";

/**
 * 缓存token
 */
function saveToken(token) {
	CacheUtil.setToken(token)
}

/**
 * 登录后处理
 * 1.缓存用户信息
 * 2.登录IM
 * 3.判断是跳到注册流程还是首页
 */
function login(res) {
	console.log('11');
	//缓存
	saveCache(res);
	console.log('222');
	//初始化IM
	getApp().loginIM();
	console.log('333');
	// isComplete: 0.首页；其他：注册流程
	if (res.data.isComplete == 0) {
		uni.setStorageSync('login', true);
		uni.switchTab({
			url: '/pages/tab/home/home',
			fail: (error) => {
				uni.showToast({
					title: JSON.stringify(error),
					icon: 'none'
				})
			}
		})
		//第一次登录
		uni.$emit("requestHome");
	} else {
		uni.navigateTo({
			url: '/main/register/register-info',
			fail: (error) => {
				uni.showToast({
					title: JSON.stringify(error),
					icon: 'none'
				})
			}
		})
	}
}

/**
 * 第一次登录
 * 1.app
 * 2.微信小程序每次进入都需要登录
 */
function loginOnce() {
	console.log("loginOnce");
	const login = CacheUtil.getLogin();
	if (!login) {
		// // #ifdef APP-PLUS
		uni.navigateTo({
			url: '/main/login/login'
		})
		// // #endif
	}
	// // #ifdef MP-WEIXIN
	// const openId = uni.getStorageSync('openId');
	// if (openId) {
	// 	wxLogin(openId);
	// } else {
	// 	getOpenId()
	// }
	// // #endif
}

/**
 * 退出登录
 * 1.跳到登录页
 * 2.清空缓存
 * 3.退出IM
 */
function logout() {
	uni.reLaunch({
		url: '/main/login/login',
	});
	//清空缓存：token, 登录状态
	clearCache();
	try {
		//IM退出:在App.vue中第一次登录会报错
		uni.$TUIKit.logout();
	} catch (error) {
		console.log("IM退出失败: " + JSON.stringify(error));
	}
}

/**
 * 微信小程序获取openId
 */
function getOpenId() {
	console.log("获取openId-开始")
	uni.login({
		"provider": "weixin",
		"onlyAuthorize": true, // 微信登录仅请求授权认证
		success: async (event) => {
			const { code } = event
			let url = uni.$constant.baseUrl + '/api/appWxLogin/loginWx?appName=zy&jsCode=' + code;
			console.log("获取openId-code：" + code)
			console.log("获取openId-url：" + url)
			uni.request({
				url: url,
				success: (res) => {
					console.log('获得openId完成:' + JSON.stringify(res));
					if (res.data.data.openid) {
						CacheUtil.setOpenId(res.data.data.openid)
						wxLogin(res.data.data.openid);
					}
				}
			});
		},
	})
}

/**
 * 微信小程序登录
 */
async function wxLogin(openId) {
	let param = {
		loginName: '13950104779',
		smsCode: '708090'
	};
	uni.$http.post('/api/login', param).then(res=>{
		saveToken(res.data)
		requestUser()
	})
}

/**
 * 获取用户信息
 */
function requestUser() {
	uni.$http.getUser().then(res=>{
		login(res)
	})
}

function saveCache(res) {
	console.log(111);
	CacheUtil.setUserId(res.data.id)
	console.log(2);
	CacheUtil.setUserName(res.data.nick)
	console.log(3);
	CacheUtil.setUserPic(res.data.headPicUrl)
	console.log(4);
	CacheUtil.setUserSex(res.data.sex)
	console.log(5);
	CacheUtil.setUserTxcode(res.data.txCode)
}

function clearCache() {
	CacheUtil.removeLogin()
	CacheUtil.removeToken()
	getApp().globalData.openTicketMin = false
}

export default {
	saveToken,
	login,
	logout,
	loginOnce,
	wxLogin
}